# 封装对象定义只能内部访问变量
''' 要求：在Car类定义只能内部访问的变量，外部不可访问。'''
class Car:

    ##定义初始化函数
    def __init__(self, name, color):
        self.name = name
        ##🔥定义只能内部可以访问变量命名规则：__+定义的变量名color
        self.__color = color

    ##重写object的__str__()方法
    def __str__(self):
        return 'name:{0}，color:{1}'.format(self.name, self.__color)

    ##定义示例方法
    def show(self):
        print('一辆%s, 颜色：%s' % (self.name, self.__color))



##使用案例
car = Car('大奔', '红色')
print(car.name)
# print(car.color) 发现获取不到color：AttributeError: 'Car' object has no attribute 'color'
#发现函数中是可以获取到color
car.show()

print(car)

##执行结果
'''
大奔
一辆大奔, 颜色：红色
'''

##若我非要访问类对象的内部变量呢？ 可以使用dir(对象变量) 但是不建议这样访问！！不符合规范；
# dir() 是object 对象的方法用来获取所有属性
# print(dir(car))
# print(car._Car__color)
